home *** CD-ROM | disk | FTP | other *** search
- <refentry id="libgimp-gimpmatrix" revision="19 Jan 2001">
- <refmeta>
- <refentrytitle>gimpmatrix</refentrytitle>
- <manvolnum>3</manvolnum>
- <refmiscinfo>LIBGIMP Library</refmiscinfo>
- </refmeta>
-
- <refnamediv>
- <refname>gimpmatrix</refname><refpurpose>Utilities to set up and manipulate 3x3 transformation matrices.</refpurpose>
- </refnamediv>
-
- <refsynopsisdiv><title>Synopsis</title>
- <synopsis>
-
-
-
- typedef <link linkend="GimpMatrix3[3][3]">GimpMatrix3[3][3]</link>;
- typedef <link linkend="GimpMatrix4[4][4]">GimpMatrix4[4][4]</link>;
- void <link linkend="gimp-matrix3-transform-point">gimp_matrix3_transform_point</link> (<link linkend="GimpMatrix3">GimpMatrix3</link> matrix,
- <link linkend="gdouble">gdouble</link> x,
- <link linkend="gdouble">gdouble</link> y,
- <link linkend="gdouble">gdouble</link> *newx,
- <link linkend="gdouble">gdouble</link> *newy);
- void <link linkend="gimp-matrix3-mult">gimp_matrix3_mult</link> (<link linkend="GimpMatrix3">GimpMatrix3</link> matrix1,
- <link linkend="GimpMatrix3">GimpMatrix3</link> matrix2);
- void <link linkend="gimp-matrix3-identity">gimp_matrix3_identity</link> (<link linkend="GimpMatrix3">GimpMatrix3</link> matrix);
- void <link linkend="gimp-matrix3-translate">gimp_matrix3_translate</link> (<link linkend="GimpMatrix3">GimpMatrix3</link> matrix,
- <link linkend="gdouble">gdouble</link> x,
- <link linkend="gdouble">gdouble</link> y);
- void <link linkend="gimp-matrix3-scale">gimp_matrix3_scale</link> (<link linkend="GimpMatrix3">GimpMatrix3</link> matrix,
- <link linkend="gdouble">gdouble</link> x,
- <link linkend="gdouble">gdouble</link> y);
- void <link linkend="gimp-matrix3-rotate">gimp_matrix3_rotate</link> (<link linkend="GimpMatrix3">GimpMatrix3</link> matrix,
- <link linkend="gdouble">gdouble</link> theta);
- void <link linkend="gimp-matrix3-xshear">gimp_matrix3_xshear</link> (<link linkend="GimpMatrix3">GimpMatrix3</link> matrix,
- <link linkend="gdouble">gdouble</link> amount);
- void <link linkend="gimp-matrix3-yshear">gimp_matrix3_yshear</link> (<link linkend="GimpMatrix3">GimpMatrix3</link> matrix,
- <link linkend="gdouble">gdouble</link> amount);
- <link linkend="gdouble">gdouble</link> <link linkend="gimp-matrix3-determinant">gimp_matrix3_determinant</link> (<link linkend="GimpMatrix3">GimpMatrix3</link> matrix);
- void <link linkend="gimp-matrix3-invert">gimp_matrix3_invert</link> (<link linkend="GimpMatrix3">GimpMatrix3</link> matrix,
- <link linkend="GimpMatrix3">GimpMatrix3</link> matrix_inv);
- void <link linkend="gimp-matrix3-duplicate">gimp_matrix3_duplicate</link> (<link linkend="GimpMatrix3">GimpMatrix3</link> src,
- <link linkend="GimpMatrix3">GimpMatrix3</link> target);
- <link linkend="gboolean">gboolean</link> <link linkend="gimp-matrix3-is-diagonal">gimp_matrix3_is_diagonal</link> (<link linkend="GimpMatrix3">GimpMatrix3</link> matrix);
- <link linkend="gboolean">gboolean</link> <link linkend="gimp-matrix3-is-identity">gimp_matrix3_is_identity</link> (<link linkend="GimpMatrix3">GimpMatrix3</link> matrix);
- <link linkend="gboolean">gboolean</link> <link linkend="gimp-matrix3-is-simple">gimp_matrix3_is_simple</link> (<link linkend="GimpMatrix3">GimpMatrix3</link> matrix);
- void <link linkend="gimp-matrix4-to-deg">gimp_matrix4_to_deg</link> (<link linkend="GimpMatrix4">GimpMatrix4</link> matrix,
- <link linkend="gdouble">gdouble</link> *a,
- <link linkend="gdouble">gdouble</link> *b,
- <link linkend="gdouble">gdouble</link> *c);
- </synopsis>
- </refsynopsisdiv>
-
-
-
-
-
- <refsect1>
- <title>Description</title>
- <para>
- When doing image manipulation you will often need 3x3 transformation
- matrices that define translation, rotation, scaling, shearing and
- arbitrary perspective transformations using a 3x3 matrix. Here you'll
- find a set of utility functions to set up those matrices and to perform
- basic matrix manipulations and tests.
- </para>
- </refsect1>
-
- <refsect1>
- <title>Details</title>
- <refsect2>
- <title><anchor id="GimpMatrix3[3][3]">GimpMatrix3[3][3]</title>
- <programlisting>typedef gdouble GimpMatrix3[3][3];
- </programlisting>
- <para>
-
- </para></refsect2>
- <refsect2>
- <title><anchor id="GimpMatrix4[4][4]">GimpMatrix4[4][4]</title>
- <programlisting>typedef gdouble GimpMatrix4[4][4];
- </programlisting>
- <para>
-
- </para></refsect2>
- <refsect2>
- <title><anchor id="gimp-matrix3-transform-point">gimp_matrix3_transform_point ()</title>
- <programlisting>void gimp_matrix3_transform_point (<link linkend="GimpMatrix3">GimpMatrix3</link> matrix,
- <link linkend="gdouble">gdouble</link> x,
- <link linkend="gdouble">gdouble</link> y,
- <link linkend="gdouble">gdouble</link> *newx,
- <link linkend="gdouble">gdouble</link> *newy);</programlisting>
- <para>
- Transforms a point in 2D as specified by the transformation matrix.</para>
- <para>
-
- </para><informaltable pgwide=1 frame="none" role="params">
- <tgroup cols="2">
- <colspec colwidth="2*">
- <colspec colwidth="8*">
- <tbody>
- <row><entry align="right"><parameter>matrix</parameter> :</entry>
- <entry> The transformation matrix.
- </entry></row>
- <row><entry align="right"><parameter>x</parameter> :</entry>
- <entry> The source X coordinate.
- </entry></row>
- <row><entry align="right"><parameter>y</parameter> :</entry>
- <entry> The source Y coordinate.
- </entry></row>
- <row><entry align="right"><parameter>newx</parameter> :</entry>
- <entry> The transformed X coordinate.
- </entry></row>
- <row><entry align="right"><parameter>newy</parameter> :</entry>
- <entry> The transformed Y coordinate.
- </entry></row>
- </tbody></tgroup></informaltable></refsect2>
- <refsect2>
- <title><anchor id="gimp-matrix3-mult">gimp_matrix3_mult ()</title>
- <programlisting>void gimp_matrix3_mult (<link linkend="GimpMatrix3">GimpMatrix3</link> matrix1,
- <link linkend="GimpMatrix3">GimpMatrix3</link> matrix2);</programlisting>
- <para>
- Multiplies two matrices and puts the result into the second one.</para>
- <para>
-
- </para><informaltable pgwide=1 frame="none" role="params">
- <tgroup cols="2">
- <colspec colwidth="2*">
- <colspec colwidth="8*">
- <tbody>
- <row><entry align="right"><parameter>matrix1</parameter> :</entry>
- <entry> The first input matrix.
- </entry></row>
- <row><entry align="right"><parameter>matrix2</parameter> :</entry>
- <entry> The second input matrix which will be oeverwritten ba the result.
- </entry></row>
- </tbody></tgroup></informaltable></refsect2>
- <refsect2>
- <title><anchor id="gimp-matrix3-identity">gimp_matrix3_identity ()</title>
- <programlisting>void gimp_matrix3_identity (<link linkend="GimpMatrix3">GimpMatrix3</link> matrix);</programlisting>
- <para>
- Sets the matrix to the identity matrix.</para>
- <para>
-
- </para><informaltable pgwide=1 frame="none" role="params">
- <tgroup cols="2">
- <colspec colwidth="2*">
- <colspec colwidth="8*">
- <tbody>
- <row><entry align="right"><parameter>matrix</parameter> :</entry>
- <entry> A matrix.
- </entry></row>
- </tbody></tgroup></informaltable></refsect2>
- <refsect2>
- <title><anchor id="gimp-matrix3-translate">gimp_matrix3_translate ()</title>
- <programlisting>void gimp_matrix3_translate (<link linkend="GimpMatrix3">GimpMatrix3</link> matrix,
- <link linkend="gdouble">gdouble</link> x,
- <link linkend="gdouble">gdouble</link> y);</programlisting>
- <para>
- Translates the matrix by x and y.</para>
- <para>
-
- </para><informaltable pgwide=1 frame="none" role="params">
- <tgroup cols="2">
- <colspec colwidth="2*">
- <colspec colwidth="8*">
- <tbody>
- <row><entry align="right"><parameter>matrix</parameter> :</entry>
- <entry> The matrix that is to be translated.
- </entry></row>
- <row><entry align="right"><parameter>x</parameter> :</entry>
- <entry> Translation in X direction.
- </entry></row>
- <row><entry align="right"><parameter>y</parameter> :</entry>
- <entry> Translation in Y direction.
- </entry></row>
- </tbody></tgroup></informaltable></refsect2>
- <refsect2>
- <title><anchor id="gimp-matrix3-scale">gimp_matrix3_scale ()</title>
- <programlisting>void gimp_matrix3_scale (<link linkend="GimpMatrix3">GimpMatrix3</link> matrix,
- <link linkend="gdouble">gdouble</link> x,
- <link linkend="gdouble">gdouble</link> y);</programlisting>
- <para>
- Scales the matrix by x and y</para>
- <para>
-
- </para><informaltable pgwide=1 frame="none" role="params">
- <tgroup cols="2">
- <colspec colwidth="2*">
- <colspec colwidth="8*">
- <tbody>
- <row><entry align="right"><parameter>matrix</parameter> :</entry>
- <entry> The matrix that is to be scaled.
- </entry></row>
- <row><entry align="right"><parameter>x</parameter> :</entry>
- <entry> X scale factor.
- </entry></row>
- <row><entry align="right"><parameter>y</parameter> :</entry>
- <entry> Y scale factor.
- </entry></row>
- </tbody></tgroup></informaltable></refsect2>
- <refsect2>
- <title><anchor id="gimp-matrix3-rotate">gimp_matrix3_rotate ()</title>
- <programlisting>void gimp_matrix3_rotate (<link linkend="GimpMatrix3">GimpMatrix3</link> matrix,
- <link linkend="gdouble">gdouble</link> theta);</programlisting>
- <para>
- Rotates the matrix by theta degrees.</para>
- <para>
-
- </para><informaltable pgwide=1 frame="none" role="params">
- <tgroup cols="2">
- <colspec colwidth="2*">
- <colspec colwidth="8*">
- <tbody>
- <row><entry align="right"><parameter>matrix</parameter> :</entry>
- <entry> The matrix that is to be rotated.
- </entry></row>
- <row><entry align="right"><parameter>theta</parameter> :</entry>
- <entry> The angle of rotation (in radians).
- </entry></row>
- </tbody></tgroup></informaltable></refsect2>
- <refsect2>
- <title><anchor id="gimp-matrix3-xshear">gimp_matrix3_xshear ()</title>
- <programlisting>void gimp_matrix3_xshear (<link linkend="GimpMatrix3">GimpMatrix3</link> matrix,
- <link linkend="gdouble">gdouble</link> amount);</programlisting>
- <para>
- Shears the matrix in the X direction.</para>
- <para>
-
- </para><informaltable pgwide=1 frame="none" role="params">
- <tgroup cols="2">
- <colspec colwidth="2*">
- <colspec colwidth="8*">
- <tbody>
- <row><entry align="right"><parameter>matrix</parameter> :</entry>
- <entry> The matrix that is to be sheared.
- </entry></row>
- <row><entry align="right"><parameter>amount</parameter> :</entry>
- <entry> X shear amount.
- </entry></row>
- </tbody></tgroup></informaltable></refsect2>
- <refsect2>
- <title><anchor id="gimp-matrix3-yshear">gimp_matrix3_yshear ()</title>
- <programlisting>void gimp_matrix3_yshear (<link linkend="GimpMatrix3">GimpMatrix3</link> matrix,
- <link linkend="gdouble">gdouble</link> amount);</programlisting>
- <para>
- Shears the matrix in the Y direction.</para>
- <para>
-
- </para><informaltable pgwide=1 frame="none" role="params">
- <tgroup cols="2">
- <colspec colwidth="2*">
- <colspec colwidth="8*">
- <tbody>
- <row><entry align="right"><parameter>matrix</parameter> :</entry>
- <entry> The matrix that is to be sheared.
- </entry></row>
- <row><entry align="right"><parameter>amount</parameter> :</entry>
- <entry> Y shear amount.
- </entry></row>
- </tbody></tgroup></informaltable></refsect2>
- <refsect2>
- <title><anchor id="gimp-matrix3-determinant">gimp_matrix3_determinant ()</title>
- <programlisting><link linkend="gdouble">gdouble</link> gimp_matrix3_determinant (<link linkend="GimpMatrix3">GimpMatrix3</link> matrix);</programlisting>
- <para>
- Calculates the determinant of the given matrix.</para>
- <para>
-
- </para><informaltable pgwide=1 frame="none" role="params">
- <tgroup cols="2">
- <colspec colwidth="2*">
- <colspec colwidth="8*">
- <tbody>
- <row><entry align="right"><parameter>matrix</parameter> :</entry>
- <entry> The input matrix.
- </entry></row>
- <row><entry align="right"><emphasis>Returns</emphasis> :</entry><entry> The determinant.
- </entry></row>
- </tbody></tgroup></informaltable></refsect2>
- <refsect2>
- <title><anchor id="gimp-matrix3-invert">gimp_matrix3_invert ()</title>
- <programlisting>void gimp_matrix3_invert (<link linkend="GimpMatrix3">GimpMatrix3</link> matrix,
- <link linkend="GimpMatrix3">GimpMatrix3</link> matrix_inv);</programlisting>
- <para>
- Inverts the given matrix.</para>
- <para>
-
- </para><informaltable pgwide=1 frame="none" role="params">
- <tgroup cols="2">
- <colspec colwidth="2*">
- <colspec colwidth="8*">
- <tbody>
- <row><entry align="right"><parameter>matrix</parameter> :</entry>
- <entry> The matrix that is to be inverted.
- </entry></row>
- <row><entry align="right"><parameter>matrix_inv</parameter> :</entry>
- <entry> A matrix the inverted matrix should be written into.
- </entry></row>
- </tbody></tgroup></informaltable></refsect2>
- <refsect2>
- <title><anchor id="gimp-matrix3-duplicate">gimp_matrix3_duplicate ()</title>
- <programlisting>void gimp_matrix3_duplicate (<link linkend="GimpMatrix3">GimpMatrix3</link> src,
- <link linkend="GimpMatrix3">GimpMatrix3</link> target);</programlisting>
- <para>
- Copies the source matrix to the destination matrix.</para>
- <para>
-
- </para><informaltable pgwide=1 frame="none" role="params">
- <tgroup cols="2">
- <colspec colwidth="2*">
- <colspec colwidth="8*">
- <tbody>
- <row><entry align="right"><parameter>src</parameter> :</entry>
- <entry> The source matrix.
- </entry></row>
- <row><entry align="right"><parameter>target</parameter> :</entry>
- <entry> The destination matrix.
- </entry></row>
- </tbody></tgroup></informaltable></refsect2>
- <refsect2>
- <title><anchor id="gimp-matrix3-is-diagonal">gimp_matrix3_is_diagonal ()</title>
- <programlisting><link linkend="gboolean">gboolean</link> gimp_matrix3_is_diagonal (<link linkend="GimpMatrix3">GimpMatrix3</link> matrix);</programlisting>
- <para>
- Checks if the given matrix is diagonal.</para>
- <para>
-
- </para><informaltable pgwide=1 frame="none" role="params">
- <tgroup cols="2">
- <colspec colwidth="2*">
- <colspec colwidth="8*">
- <tbody>
- <row><entry align="right"><parameter>matrix</parameter> :</entry>
- <entry> The matrix that is to be tested.
- </entry></row>
- <row><entry align="right"><emphasis>Returns</emphasis> :</entry><entry> TRUE if the matrix is diagonal.
- </entry></row>
- </tbody></tgroup></informaltable></refsect2>
- <refsect2>
- <title><anchor id="gimp-matrix3-is-identity">gimp_matrix3_is_identity ()</title>
- <programlisting><link linkend="gboolean">gboolean</link> gimp_matrix3_is_identity (<link linkend="GimpMatrix3">GimpMatrix3</link> matrix);</programlisting>
- <para>
- Checks if the given matrix is the identity matrix.</para>
- <para>
-
- </para><informaltable pgwide=1 frame="none" role="params">
- <tgroup cols="2">
- <colspec colwidth="2*">
- <colspec colwidth="8*">
- <tbody>
- <row><entry align="right"><parameter>matrix</parameter> :</entry>
- <entry> The matrix that is to be tested.
- </entry></row>
- <row><entry align="right"><emphasis>Returns</emphasis> :</entry><entry> TRUE if the matrix is the identity matrix.
- </entry></row>
- </tbody></tgroup></informaltable></refsect2>
- <refsect2>
- <title><anchor id="gimp-matrix3-is-simple">gimp_matrix3_is_simple ()</title>
- <programlisting><link linkend="gboolean">gboolean</link> gimp_matrix3_is_simple (<link linkend="GimpMatrix3">GimpMatrix3</link> matrix);</programlisting>
- <para>
- Checks if we'll need to interpolate when applying this matrix as
- a transformation.</para>
- <para>
-
- </para><informaltable pgwide=1 frame="none" role="params">
- <tgroup cols="2">
- <colspec colwidth="2*">
- <colspec colwidth="8*">
- <tbody>
- <row><entry align="right"><parameter>matrix</parameter> :</entry>
- <entry> The matrix that is to be tested.
- </entry></row>
- <row><entry align="right"><emphasis>Returns</emphasis> :</entry><entry> TRUE if all entries of the upper left 2x2 matrix are either
- 0 or 1
- </entry></row>
- </tbody></tgroup></informaltable></refsect2>
- <refsect2>
- <title><anchor id="gimp-matrix4-to-deg">gimp_matrix4_to_deg ()</title>
- <programlisting>void gimp_matrix4_to_deg (<link linkend="GimpMatrix4">GimpMatrix4</link> matrix,
- <link linkend="gdouble">gdouble</link> *a,
- <link linkend="gdouble">gdouble</link> *b,
- <link linkend="gdouble">gdouble</link> *c);</programlisting>
- <para>
-
- </para><informaltable pgwide=1 frame="none" role="params">
- <tgroup cols="2">
- <colspec colwidth="2*">
- <colspec colwidth="8*">
- <tbody>
- <row><entry align="right"><parameter>matrix</parameter> :</entry>
- <entry></entry></row>
- <row><entry align="right"><parameter>a</parameter> :</entry>
- <entry></entry></row>
- <row><entry align="right"><parameter>b</parameter> :</entry>
- <entry></entry></row>
- <row><entry align="right"><parameter>c</parameter> :</entry>
- <entry>
-
- </entry></row>
- </tbody></tgroup></informaltable></refsect2>
-
- </refsect1>
-
-
-
- <refsect1>
- <title>See Also</title>
- <para>
- <link linkend="GimpVector2">GimpVector2</link>
- </para>
- <para>
- <link linkend="GimpVector3">GimpVector3</link>
- </para>
- <para>
- <link linkend="GimpVector4">GimpVector4</link>
- </para>
- </refsect1>
-
- </refentry>
-